#include <iostream>
#include <stack>
#include <assert.h>
using namespace std;
// 阶乘
int func(int n)
{
    if (n == 1)
        return 1;
    return func(n - 1) * n;
}
int main()
{
    cout << func(3);
    return 0;
}

// 斐波那契数列
// 1.递归
// int fib(int n)
// {
//     assert(n >= 1);
//     if (n == 1 || n == 2)
//         return 1;
//     return fib(n - 1) + fib(n - 2);
// }
// int main()
// {
//     int n = 10;
//     for (int i = 1; i <= n; i++)
//     {
//         cout << fib(i) << endl;
//     }
//     return 0;
// }

// 2.非递归

// int main()
// {
//     int n = 0;
//     cin >> n;
//     if (n == 0)
//         return -1;
//     if (n == 1 || n == 2)
//     {
//         cout << 1 << endl;
//     }
//     int a = 1, b = 1;
//     for (int i = 0; i < n - 2; i++)
//     {
//         int c = a + b;
//         a = b;
//         b = c;
//     }
//     cout << b << endl;
//     return 0;
// }
// 汉诺塔问题
// void hanoi(char a, char b)
// {
//     cout << a << "->" << b << endl;
// }
// void test(int i, int a, int b, int c)
// {
//     if (i == 1)
//     {
//         hanoi(a, c);
//         return;
//     }
//     test(i - 1, a, c, b);
//     test(1, a, b, c);
//     test(i - 1, b, a, c);
// }
// int main()
// {
//     test(3, 'a', 'b', 'c');
//     return 0;
// }